package com.qsw.refreshrecyclerview.RefreshRecyclerView.adapter;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

public abstract class ScrollTableViewAdapter<T> {
    protected List<T> mData;

    public ScrollTableViewAdapter(List<T> data) {
        this.mData = data;
    }

    /**
     * 设置数据源，将会清空之前的数据
     *
     * @param data 数据源
     */
    public void setData(List<T> data) {
        this.mData = data;
    }

    /**
     * 添加数据，将会续在之前的数据后边
     *
     * @param data 要添加的数据
     */
    public void addData(List<T> data) {
        mData.addAll(data);
    }

    /**
     * 当需要获取左上角布局时调用
     *
     * @return 左上角布局
     */
    public abstract View onGetLeftTopLayout();

    /**
     * 当需要获取右上角布局时调用
     *
     * @return 右上角布局
     */
    public abstract View onGetRightTopLayout();

    /**
     * 当需要获取左侧布局宽度时调用
     *
     * @return 左侧布局相对于屏幕宽度的比例，范围为0-1，0为不显示，1为整个屏幕宽度
     */
    public abstract float onGetLeftWidthPercent();

    public abstract RecyclerView.ViewHolder onCreateLeftBottomViewHolder(@NonNull ViewGroup parent, int viewType);

    public abstract void onBindLeftBottomViewHolder(@NonNull RecyclerView.ViewHolder holder, int position);

    public abstract RecyclerView.ViewHolder onCreateRightBottomViewHolder(@NonNull ViewGroup parent, int viewType);

    public abstract void onBindRightBottomViewHolder(@NonNull RecyclerView.ViewHolder holder, int position);

    /**
     * 当获取下方条目条数时调用
     *
     * @return 下方条目条数
     */
    public abstract int getItemCount();

    /**
     * 获取对应数据，若position小于0或超过数据量，则返回null
     *
     * @param position 索引
     * @return 对应数据或null
     */
    public T getItemBean(int position) {
        if (position < 0 || position >= getItemCount()) {
            return null;
        }
        return mData.get(position);
    }
}
